<?php
declare (strict_types = 1);

namespace app\validate;

use think\Validate;

class ForumValidate extends Validate
{
    /**
     * 定义验证规则
     * 格式：'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'code|验证码'               =>           'require|captcha',
        // 'code|验证码'               =>           'require|captcha|token',
        'unick|用户名'              =>           'require|length:2,10',
        'pwd|密码'                  =>          'require|length:6,16',
        'pwd2|确认密码'             =>          'require|confirm:pwd',
        'email|邮箱地址'            =>          'require|email',
        'tel|电话号码'              =>          'require|mobile',
        'islog|登录状态'            =>          'require',
        'mid|帖子ID'                =>          'checkId:1',
        'sid|帖子ID'                =>          'checkId:2'
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [
        'unick.length'           =>          '用户名长度限制是2~10个字符',
        'pwd.length'            =>          '密码的长度限制是6~16个字符',
        'pwd2.length'           =>          '两次密码输入不一致！',
        'email'                 =>          '邮箱地址的格式不正确！',
        'tel'                   =>          '手机号码格式不正确！',
        'code'                  =>          '验证码格式不正确！',
        // 'code.token'            =>          '请勿重复提交！',
        'mid'                   =>          '你访问的Mid地址不存在!',
        'sid'                   =>          '你访问的Sid地址不存在!',
        'islog'                 =>          '请先登录再访问!'
    ];

    /**
     * 定义验证场景
     * 格式：'场景名' =>  ['字段名1','字段名2']
     */
    protected $scene = [
        'register'      =>      ['unick','pwd','pwd2','email','tel','code'],
        'dologin'       =>      ['name','pwd','code'],
        'msid'          =>      ['mid','sid'],
        'islog'         =>      ['islog','sid'],
        'dpsid'         =>      ['islog']
    ];


    /**
     * 验证mid的合法性
     * @param $value 被验证字段的数据——必须
     * @param $rule 验证规则——其他可以传递的参数
     * @param $data 全部（本场景下所有）的字段的数据，数组
     * @param $name 被验证字段的名字
     * @param $remark 被验证字段的描述
     */
    public function checkId($value,$rule)
    {
        // 验证mid是否在数据表中存在
        // $re = app('mes') -> field('m_id') -> find($value);
        // $re = app('db') -> name('mes') -> where('m_id',$value) -> field('m_id') -> find();
        if ($rule !== 1) {
            $msid = app('mes')->field('m_id')->find($value);
        }else {
            # code...
            if ($value == 0) {
                # code...
                return true;
            }else {

                $msid = app('section')->field('s_id')->find($value);
            }
        }
        if ($msid != null) {
            #查到了
            return true;
        }
        return false;
    }
}
